﻿Imports StandAuto.DesktopApi
Imports StandAuto.Models

Public Class FormVendedores

    Private Sub FormVendedores_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        DataGridView1.DataSource = AcessoCamadaDeDados.getAllVendedores

    End Sub

    Private Sub DataGridView1_Click(sender As Object, e As EventArgs) Handles DataGridView1.Click

        Dim vendedor As Vendedor
        Dim dtGridView As DataGridView = CType(sender, DataGridView)
        Try
            Dim rowindex = dtGridView.CurrentCell.RowIndex
            vendedor = CType(dtGridView.DataSource()(rowindex), Vendedor)
            MapVendedor(vendedor)
        Catch ex As Exception
            Dim result As DialogResult = MessageBox.Show("Nao conseguimos mapear totalmente os dados do Vendedor devido a:" + vbCrLf + ex.Message, "Ocurreu um erro:", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Exclamation)
            Select Case result
                Case DialogResult.Abort
                    Me.Close()
                Case DialogResult.Retry
                    DataGridView1_Click(sender, e)
            End Select
        End Try

    End Sub

    Private Sub MapVendedor(vendedor As Vendedor)
        txtid.Text = vendedor.id
        TxtContribuinte.Text = vendedor.contribuinte
        TxtLocalidade.Text = vendedor.localidade
        TxtMorada.Text = vendedor.morada
        txtNome.Text = vendedor.nome
        TxtTelefone.Text = vendedor.telefone
        TxtPostal.Text = vendedor.codigoPostal
        DataGridView2.DataSource = AcessoCamadaDeDados.GetAllVendasByVendedor(vendedor.id)
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        txtid.Text = "(novo)"
        TxtContribuinte.Text = ""
        TxtLocalidade.Text = ""
        TxtMorada.Text = ""
        txtNome.Text = ""
        TxtTelefone.Text = ""
        TxtPostal.Text = ""
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim VendToSave As Vendedor = New Vendedor() With {
       .codigoPostal = TxtPostal.Text,
       .contribuinte = TxtContribuinte.Text,
        .localidade = TxtLocalidade.Text,
        .morada = TxtMorada.Text,
        .nome = txtNome.Text,
        .telefone = TxtTelefone.Text,
        .id = -1
       }
        If IsNumeric(txtid.Text) Then
            VendToSave.id = txtid.Text
        End If
        Dim ValidaVend As String = validaVendedor(VendToSave)
        If (String.IsNullOrEmpty(ValidaVend)) Then
            Try
                AcessoCamadaDeDados.SaveVendedor(VendToSave)
                DataGridView1.DataSource = AcessoCamadaDeDados.getAllVendedores()
                If Not IsNumeric(txtid.Text) Then
                    MapVendedor(AcessoCamadaDeDados.getAllVendedores().OrderBy(Function(z) z.id).Last())
                End If
            Catch ex As Exception
                MessageBox.Show("Erro a guardar o Vendedor:" & ex.Message, "Erro ao guardar o Vendedor", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        Else
            MessageBox.Show("Erro a validar o Vendedot antes de guardar:" & vbCrLf & ValidaVend, "Validação do vendedor", MessageBoxButtons.OK)
        End If
    End Sub

    Private Function validaVendedor(vendToSave As Vendedor) As String
        Dim retVal As String = String.Empty
        If String.IsNullOrEmpty(vendToSave.nome.Trim()) Then
            retVal = "Por favor preencha um nome para o vendedor."
        End If
        Return retVal
    End Function

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim frm As FormTransacao = New FormTransacao()
        If IsNumeric(txtid.Text) Then
            frm.vendedor = AcessoCamadaDeDados.getVendedor(txtid.Text)
            frm.isVenda = True
            frm.ShowDialog()
            If Not ((txtid.Text = "(novo)" Or String.IsNullOrEmpty(txtid.Text))) Then
                DataGridView2.DataSource = AcessoCamadaDeDados.GetAllVendasByVendedor(txtid.Text)
            End If
        End If
    End Sub

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        If IsNumeric(txtid.Text) Then
            DataGridView2.DataSource = Utilitarios.BuscarListaPesquisada(Of Venda)(AcessoCamadaDeDados.GetAllVendasByVendedor(txtid.Text), TextBoxPesquisaVenda.Text)
        End If
    End Sub



    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        DataGridView1.DataSource = Utilitarios.BuscarListaPesquisada(Of Vendedor)(AcessoCamadaDeDados.getAllVendedores(), TextBoxVendedores.Text)
    End Sub

    Private Sub TextBoxVendedores_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBoxVendedores.KeyPress
        If e.KeyChar = vbCr Then
            Button4.PerformClick()
        End If
    End Sub

    Private Sub TextBoxPesquisaVenda_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBoxPesquisaVenda.KeyPress
        If e.KeyChar = vbCr Then
            Button5.PerformClick()
        End If
    End Sub

    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
        Dim url As String = AcessoCamadaDeDados.getSetting("URLREPORT")
        If Not String.IsNullOrWhiteSpace(txtid.Text) Or txtid.Text = "(novo)" Then
            System.Diagnostics.Process.Start(url & "/Transacao/Vendasbyvendedor/" + txtid.Text)
        End If
    End Sub
End Class